AWS CLIでSageMaker Studioの新UIを起動してみた
はじめに
昨年のre:InventでSageMaker Stuidoの新しいUIが発表されました。
今回はこのSageMaker Stuidoの新しいUIをAWS CLIを使って起動してみました。
いきなりまとめ
以下のコマンドでSageMaker Studioを新しいUIで起動することができます。
aws sagemaker create-domain --domain-name <ドメイン名> --auth-mode IAM --vpc-id <VPC-ID> --subnet-ids <サブネットID> --default-user-settings '{"StudioWebPortal": "ENABLED", "DefaultLandingUri": "studio::", "ExecutionRole":"<IAMロールのarn\>":}'
<ドメイン名>、<VPC-ID>、<サブネットID>、<IAMロールのarn>は適宜入力して下さい。 また、IAMロールにはSageMakerFullAccessが許可されたIAMロールが必要です。
CloudFormationでSageMaker ドメインを作成
今回このような検証を行った事の発端は、SageMakerドメインをCloudFormationで作成したことが始まりでした。 CloudFormationで作成したドメインからStudioを起動したところ、見覚えのない起動画面に遷移しました。
あれ?なんだこれ、いつもと違うぞ? そうです、古いUIのStudioが起動していたのです。
私は最近SageMakerを触り始めた人間なので、こちらのUIとは初対面でした。 起動時間がとても長かったので、あれ?おかしいな...と思いながらしばらく待っていると
やはりいつもと違うUIでした。 やけに起動に時間がかかり、画面も違うということで、ここでやっと古いStudioが起動していることに気づきました。
SageMakerのドキュメントを確認してみました。
Administrators can make Studio the default experience when creating a domain from the SageMaker console or the AWS CLI
執筆時点では新UIに対応したドメインはマネジメントコンソールまたはAWS CLIからのみ作成することができるようです。
こちら私の勘違いでした。 よくドキュメントを確認したところ、CloudFormationにも対応していそうなので試してみました。 以下のCloudFormationテンプレートでドメインを作成します。
AWSTemplateFormatVersion: "2010-09-09" Description: AWS CloudFormation Sample Template for SageMaker Studio Domain Resources: SageMakerStudioDomain: Type: "AWS::SageMaker::Domain" Properties: DomainName: "<ドメイン名>" AuthMode: "IAM" DefaultUserSettings: ExecutionRole: "<IAMロールのarn\>" StudioWebPortal: "ENABLED" SubnetIds: "<サブネットID>" VpcId: "<VPC-ID\>"
作成されたドメインから起動したStudioでは、新しいUIで起動することができました。
AWS CLIでSageMaker Studioの新UIを立ち上げる
注意点として、 AWS CLIでドメインを作成する場合、SageMakerのフルアクセス権限を持ったIAMロールが必要です。 IAMロールの情報がない状態で作成すると、画像のようにステータスがFaildとなります。 詳細を調べても「内部エラー」という情報しか得られず、IAMロールが必要ということに気づくまでに時間がかかりました。
それではドメインを作成します。
aws sagemaker create-domain --domain-name <ドメイン名> --auth-mode IAM --vpc-id <VPC ID> --subnet-ids <サブネットID> --default-user-settings '{"StudioWebPortal": "ENABLED", "DefaultLandingUri": "studio::", "ExecutionRole":"<IAM Roleのarn>":}'
{ "Domainarn": "arn:aws:sagemaker:ap-northeast-1:1234567890:domain/d-asdfghjklqwer", "Url": "https://d-asdfghjklqwer.studio.ap-northeast-1.sagemaker.aws" }
ドメインを作成すると、ドメインarnがレスポンスとして返ってきます。 ドメインの作成は少し時間がかかるので数分待ちます。
ステータスがInServiceになったことが確認できたらユーザープロファイルを作成します。 <ドメインID>の部分には先ほど作成したドメインのIDを入力します。 ドメインIDはarnの末尾の部分です(今回の場合はd-asdfghjklqwer) <ユーザープロファイル>にはユーザープロファイル名 <IAMロールのarn>にはドメイン作成時と同じarnを入力します。
aws sagemaker create-user-profile --domain-id <ドメインID> --user-profile-name <ユーザープロファイル名> --user-settings '{"ExecutionRole":"IAM Roleのarn"}'
ユーザープロファイルが作成されたらStudioを起動します。
新しいUIで起動されていますね。
まとめ
- 記事執筆時点ではCloudFormationはStudioの新UIに対応していない
- AWS CLIからドメインを作成する際はIAMロールを指定する